const fs = require('fs')
const co = require('co');                           //引入co模块不用去写Generator 函数的执行器。
const fetch = require('node-fetch')                   //fetch

const Eventproxy = require('eventproxy')                //用于解决毁掉
const ep = new Eventproxy();
const thunkify = require('thunkify');                 //引入Thunk   
const readFileThunk = thunkify(fs.readFile);          //用于处理异步函数的库




// const gen = function* () {
//     const sj={}
//     const r1 = yield fetch('http://localhost:3000/aaa').then((data)=>{ //异步操作
//             return data.json()
//     }).then((data)=>{
//           sj.a1=data 
//     })

//     const r2 = yield readFileThunk('./M_.js');      //异步操作
//     return sj                                       //所有异步操作的数据整合
// };

// co(gen).then(function (data) {                      //成功后的回调函数 变成同步的了  
//     console.log(data)
//     console.log('Generator 函数执行完成');
// })



// 数组的写法
co(function* () {                           //并发实现
    var res = yield [
        fetch('http://localhost:3000/aaa'),
        fetch('http://localhost:3000/aaa')
    ];
    return res
}).then((data) => {
    data.map((e) => {
        e.json().then(data2 => {ep.emit('read_file', data2)})       //结合Eventproxy 实现
    })
    ep.after('read_file', 2, function (contents) {      //最后返回数据的回调函数
        console.log(contents)
    })

})

// 对象的写法
// co(function* () {
//     var res = yield {
//         1: Promise.resolve(1),
//         2: Promise.resolve(2),
//     };
//     console.log(res);
// }).catch(onerror);
